package main

import (
	"fmt"
)

func main() {

	//函数结束之前调用defer 后面的语句
	//如果一个函数中有多个defer语句，它们会以LIFO（后进先出）的顺序执行。
	// 哪怕函数或某个延迟调用发生错误，这些调用依旧会被执⾏。

	defer fmt.Println("defer 2222222222")

	defer Test()

	defer fmt.Println("defer 33333333333")

	a := 10
	b := 20

	defer func() {

		fmt.Printf("defer a is %d , b is %d \n", a, b)
	}()

	fmt.Printf("a is %d , b is %d \n", a, b)

	a += 100
	b += 100

}

func Test() {

	/*a := 1/0
	fmt.Println("a ==",a)*/

	fmt.Println("defer 111111111")
}
